package com.linyaonan.leetcode.easy._977;

import java.util.Arrays;

/**
 *
 * 给定一个按非递减顺序排序的整数数组 A，返回每个数字的平方组成的新数组，要求也按非递减顺序排序。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：[-4,-1,0,3,10]
 * 输出：[0,1,9,16,100]
 * 示例 2：
 *
 * 输入：[-7,-3,2,3,11]
 * 输出：[4,9,9,49,121]
 *  
 *
 * 提示：
 *
 * 1 <= A.length <= 10000
 * -10000 <= A[i] <= 10000
 * A 已按非递减顺序排序。
 *
 *
 * @author: Lin
 * @date: 2020/1/8
 */
public class SquaresArray {

    public int[] sortedSquares(int[] A) {
        for (int i = 0; i < A.length; i++) {
            A[i] *= A[i];
        }
        Arrays.sort(A);
        return A;
    }

    /**
     * 双指针
     * @param A
     * @return
     */
    public int[] sortedSquares2(int[] A) {
        int[] result = new int[A.length];

        int l = 0;
        int r = A.length - 1;
        int i = A.length - 1;
        while (l <= r && i >= 0) {
            if (Math.abs(A[l]) > Math.abs(A[r])) {
                result[i--] = A[l] * A[l];
                l++;
            } else {
                result[i--] = A[r] * A[r];
                r--;
            }
        }

        return result;

    }
}
